#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Excel文件多sheet转CSV工具
将Excel文件中的每个sheet分别保存为CSV文件
"""

import pandas as pd
import os
import sys

def excel_to_csv(excel_file_path):
    """
    将Excel文件的所有sheet转换为CSV文件
    
    Args:
        excel_file_path (str): Excel文件路径
    """
    try:
        # 读取Excel文件的所有sheet
        excel_file = pd.ExcelFile(excel_file_path)
        
        print(f"正在处理文件: {excel_file_path}")
        print(f"发现 {len(excel_file.sheet_names)} 个sheet:")
        for i, sheet_name in enumerate(excel_file.sheet_names, 1):
            print(f"  {i}. {sheet_name}")
        
        # 获取文件名（不含扩展名）
        base_name = os.path.splitext(os.path.basename(excel_file_path))[0]
        
        # 为每个sheet创建CSV文件
        for sheet_name in excel_file.sheet_names:
            try:
                # 读取sheet数据
                df = pd.read_excel(excel_file_path, sheet_name=sheet_name)
                
                # 创建CSV文件名（清理sheet名称中的特殊字符）
                safe_sheet_name = "".join(c for c in sheet_name if c.isalnum() or c in (' ', '-', '_')).rstrip()
                csv_filename = f"{base_name}_{safe_sheet_name}.csv"
                
                # 保存为CSV文件
                df.to_csv(csv_filename, index=False, encoding='utf-8-sig')
                
                print(f"✓ 已保存: {csv_filename} ({len(df)} 行, {len(df.columns)} 列)")
                
            except Exception as e:
                print(f"✗ 处理sheet '{sheet_name}' 时出错: {str(e)}")
        
        print("\n转换完成！")
        
    except Exception as e:
        print(f"读取Excel文件时出错: {str(e)}")
        return False
    
    return True

def main():
    """主函数"""
    # Excel文件路径
    excel_file = "波影高压发生器灯丝测试报告20251020(2).xlsx"
    
    # 检查文件是否存在
    if not os.path.exists(excel_file):
        print(f"错误: 找不到文件 '{excel_file}'")
        print("请确保文件在当前目录中")
        return
    
    # 执行转换
    success = excel_to_csv(excel_file)
    
    if success:
        print("\n所有CSV文件已保存到当前目录")
    else:
        print("\n转换过程中出现错误")

if __name__ == "__main__":
    main()
